<!--
 Asterisk -- An open source telephony toolkit.

 Copyright (C) 1999 - 2012, Digium, Inc.

 Mark Spencer <markster@digium.com>

 See http://www.asterisk.org for more information about
 the Asterisk project. Please do not directly contact
 any of the maintainers of this project for assistance;
 the project provides a web site, mailing lists and IRC
 channels for your use.
 This program is free software, distributed under the terms of
 the GNU General Public License Version 2. See the LICENSE file
 at the top of the source tree.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
	<style type="text/css">
		#container {
			margin: 0 auto;
			width: 100%;
			height: 100%;
			background: #fff;
		}
		#top {
			float: left;
			width: 100%;
			background: #fff;
		}
		#bottom {
			float: left;
			width: 100%;
			background: #fff;
		}
		#sender {
			clear: left;
			float: left;
			width: 20%;
			display: inline;
			overflow: auto;
		}
		#output {
			float: right;
			width: 79%;
			display: inline;
			overflow: auto;
			border: thin solid black;
		}
		.required {
			color: red;
		}
	</style>
	<title>Asterisk Manager Utility</title>
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>

	<script type="text/javascript">

$(document).ready(function() {
	$('#output').height($(document).height() - $('#top').height() - 100);
	$.ajax({
		type: "GET",
		url: "core-en_US.xml",
		dataType: "xml",
		success: parseXml
	});

	$("#login").submit(function() {
		$("#output").empty();
		submitCommand($(this));
		$("#command").focus();
		return false;
	});

	$("#search_button").click(function() {
		var command = $("#command").val();
		$("#command").val("");
		$("#output").empty();
		if (commands) {
			commands.each(function() {
				if ($(this).attr("name").toLowerCase() == command.toLowerCase()) {
					buildCommandForm($(this));
				}
			});
		}
		$('#output').height($(document).height() - $('#top').height() - 100);
		return false;
	});
	$('#command').keyup(function(event) {
		if (event.keyCode == '13') {
			return;
		}
		var matches = [];
		var search = $("#command").val().toLowerCase();
		$("#output").empty();
		if (search.length && commands) {
			commands.each(function() {
				var com = $(this).attr("name").toLowerCase();
				if (com.substr(0, search.length) === search) {
					matches.push(com);
				}
			});
		}
		if (matches.length) {
			$("#output").append(matches.sort().join("<br/>"));
		}
	});
});

function parseXml(xml) {
	commands = $(xml).find("manager")
}

function buildCommandForm(command) {
	var name = command.attr("name");
	var i = 0;
	$("#sendcommand").empty();
	$("#sendcommand").unbind('submit');
	$("#sendcommand").append('<label>Action:&nbsp;</label><input name="action" readonly="readonly" value="'+name+'"/><br />');
	command.find("parameter").each(function() {
		var param = $(this).attr("name");
		if (param != "ActionID") {
			$("#sendcommand").append('<label for="'+param+'">'+param+':&nbsp;</label><input name="'+param+'" /><br />');
			if ($(this).attr("required")) {
				$('label[for='+param+']').addClass("required");
			}
			if (i == 0) {
				$("input[name="+param+"]").focus();
			}
			i++;
		}
	});
	$("#sendcommand").append('<button type="submit" id="commandbutton">Send</button>');
	$("#sendcommand").submit(function() {
		$("#output").empty();
		submitCommand($(this));
		$("#command").focus();
		return false;
	});

	// If we don't have any fields to fill in, go ahead and submit!
	if (i == 0) {
		$("#sendcommand").submit();
	}
}

function submitCommand(form) {
	$.ajax({
		type: "GET",
		url: "../rawman",
		dataType: "text",
		data: $(form).serializeArray(),
		success: displayResponse,
		failure: function() {alert("Error!");}
	});
	return false;
}

function displayResponse(data) {
	data = data.replace(/\r\n/g, "<br />");
	$("#output").append(data);
	return false;
}

	</script>
</head>

<body>
	<div id="container">
		<div id="top">
			<form id="login" name="login">
				<label for="username">Username:&nbsp;</label><input id="username" name="username" />
				<label for="secret">Secret:&nbsp;</label><input id="secret" name="secret" type="password"/>
				<input type="hidden" name="action" value="login" />
				<button id="login_button" type="submit">Submit</button>
			</form>
			<hr />
			<form id="search" name="search">
				<label for="txt">Action:&nbsp;</label><input name="command" id="command"/>
				<button id="search_button">Submit</button>
			</form>
		</div>
		<hr />
		<div id="bottom">
			<div id="sender">
				<form id="sendcommand" name="sendcommand"></form>
			</div>
			<div id="output"></div>
		</div>
	</div>
</body>
</html>
